查看原文
其他

分析各类基金近一年『日涨幅』流水线动态图!哭了,真是跌妈不认!

李运辰 Python研究者 2022-07-01



01

前言



最近基金真是跌妈不认,我发现了一个规律:要我发推文关于基金的,接下来的几天一定跌。不相信的可以去看我前2篇基金发送时间(接下来的几天都跌)

1.基金这么赚钱!!编程实现基金从采集到分析通用模板!(白酒为例)

2.python爬取各类基金数据,以『动图可视化』方式展示基金的涨跌情况


ok,那今天就来奶一口基金(看接下来几天是否还跌)。


最近基金一直跌,所以本文绘制流水线动图展示基金的日涨幅情况(一年内)。

先看一下效果!

1.指数型基金
2.股票型基金
3.QDII型基金
4.混合型基金
5.债券型基金

02

数据获取


1.获取基金类型

+ 数据源
+ https://danjuanapp.com/


一共有五类基金(股票型、混合型、债券型、指数型、QDII型)。




代码部分


###基金类型
dict_type={"股票型":1,"混合型":3,"债券型":2,"指数型":5,"QDII型":11}
###时间
dict_time={'近一周':'1w','近一月':'1m','近三月':'3m','近六月':'6m','近1年':'1y','近2年':'2y','近3年':'3y','近5年':'5y'}

for key in dict_type:

    outwb = openpyxl.Workbook()
    outws = outwb.create_sheet(index=0)
    outws.cell(row=1, column=1, value="日期")

    column = 2
    url = "https://danjuanapp.com/djapi/v3/filter/fund?type="+str(dict_type[key])+"&order_by=1y&size=20&page=1"
    res = requests.get(url, headers=headers)
    res.encoding = 'utf-8'
    s = json.loads(res.text)
    s = s['data']['items']
    for i in range(0,len(s)):
        print(s[i]['fd_name']+":"+s[i]['fd_code'])



这样就拿到了每一类基金(1.基金名称、2.基金代码)

2.获取每一支基金日涨幅

这里获取每一支基金近一年的日涨幅情况,下面以(国泰中证钢铁ETF发起式联A)为例,基金代码是:008189



代码部分

code="008189"
url = "https://danjuanapp.com/djapi/fund/nav/history/"+str(code)+"?page=1&size=190"
res = requests.get(url, headers=headers)
res.encoding = 'utf-8'
s = json.loads(res.text)
s = s['data']['items']
date = []
percentage = []
for i in range(0, len(s)):
    print(s[i]['date'] + ":" + s[i]['percentage'])
    date.append(s[i]['date'])
    percentage.append(s[i]['percentage'])



这样我们就可以获取到该基金近一年的日涨幅情况!

下面开始保存数据(方便绘制流水线动图

3.保存数据

outwb = openpyxl.Workbook()
outws = outwb.create_sheet(index=0)
outws.cell(row=1, column=1, value="日期")

column = 2
url = "https://danjuanapp.com/djapi/v3/filter/fund?type="+str(dict_type[key])+"&order_by=1y&size=20&page=1"
res = requests.get(url, headers=headers)
res.encoding = 'utf-8'
s = json.loads(res.text)
s = s['data']['items']
for i in range(0,len(s)):
    print(s[i]['fd_name']+":"+s[i]['fd_code'])
    outws.cell(row=1, column=column, value=str(s[i]['fd_name']))
    datelist,daydetail = everyone(s[i]['fd_code'])
    count = 2
    ###写入日期
    if i == 0:
        for k in range(0, len(datelist)):
            outws.cell(row=count, column=1, value=str(datelist[k]))
            count = count +1

    count = 2
    ##写入涨幅
    for k in range(0,len(daydetail)):
        outws.cell(row=count, column=column, value=str(str(round(float(daydetail[k]), 2))))
        count = count + 1

    column = column + 1
print("-------------")

outwb.save(str(key)+"近一年日涨幅-李运辰.xlsx")  # 保存




下面开始将这些数据制作成流水线动图!!!


03

制作流水线动图


1.方法一

import bar_chart_race as bcr
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'#显示中文标签
plt.rcParams['axes.unicode_minus']=False   #解决负号“-”显示为方块的问题

# 获取数据
df = pd.read_csv("指数型近一年日涨幅-李运辰.csv",index_col=0)
# 生成动态流水线
bcr.bar_chart_race(df=df,
                    filename='指数型近一年日涨幅流水-李运辰.mp4'#生成的动态条形图的文件位置
                    orientation='h'#h条形图 v柱状图
                    sort='desc'#降序,asc-升序
                    n_bars=10#设置最多能显示的条目数
                    fixed_order=False# 设置固定类目
                    fixed_max=False#固定数值轴,使其不发生动态变化 True-固定
                    steps_per_period=24#图像帧数:数值越小,越不流畅,越大,越流畅
                    period_length=20#设置帧率,单位时间默认为500ms 即为24帧的总时间是500ms
                    end_period_pause=200,#固定值比如年份的停留时间
                    interpolate_period=False,
                    period_label={'x'.80'y'.5'ha''right''va''center','size':16}, #设置日期标签的时间格式
                    colors='dark12'#设置柱状图颜色颜色,通过在「_colormaps.py」文件中添加颜色信息,即可自定义配置颜色
                    title={'label''指数型近一年日涨幅流水','size'18,}, #图表标题
                    bar_size=.95#条形图高度
                    bar_textposition='inside',#条形图标签文字位置
                    bar_texttemplate='{x:,.0f}'#条形图标签文字格式
                    bar_label_font=16#条形图标签文字大小
                    tick_label_font=16#坐标轴标签文字大小
                    tick_template='{x:,.0f}',#坐标轴标签文字格式
                    shared_fontdict={'family''Microsoft YaHei','color''rebeccapurple'}, #全局字体属性
                    scale='linear',
                    fig=None,
                    writer=None,
                    bar_kwargs={'alpha'.7},#条形图属性,可以设置透明度,边框等
                    fig_kwargs={'figsize': (1610), 'dpi'144},#figsize-设置画布大小,默认(6, 3.5),dpi-图像分辨率,默认144
                    filter_column_colors=True,#去除条形图重复颜色,True去除,默认为False
            )


缺点:

1.安装包下载麻烦!

2.中文乱码问题(上面代码已解决乱码问题,对应小白来说可能比较困难)。

3.慢!慢!慢!,制作2-3分钟的动图或者视频,至少需要30分钟!


强烈不推荐这种方法!!!

2.方法二

方法二直接采用在线可视化制作:花火hanabi

(这里不详细解释这个平台,没打广告,哈哈哈,下面解释怎么用就行)

+ https://hanabi.data-viz.cn/visualisation/dynamic_bar_chart?lang=zh-CN


导入数据



修改图表


可以修改视频标题、背景音乐、logo等





修改好这些之后就可以导出!

导出


可以导出成gif也也可以是mp4





最后就可以将制作的流水线动图(视频)成功导出!



视频已经上传到视频号,在本文开头可以看到。


04

总结

1.爬取各类基金近一年的日涨幅数据


2.在线可视化制作流水线动图(视频)


代码获取方式在下方,如果大家对代码有明白的可以扫码看代码讲解!

如果大家对本文代码源码感兴趣,扫码关注『Python爬虫数据分析挖掘』后台回复:基金流水线 ,获取完整代码!

本文代码讲解视频!

本文手撕代码过程


------------- 推荐阅读 -------------


往期精彩

1.『异步反爬』别再说自己不会爬取『抖音』视频了!


2.python实战破解『梨视频』反爬机制,轻松实现批量视频下载!


3.爬取3w条『各种品牌』笔记本电脑数据,统计分析并进行可视化展示!真好看~


4.教你用python爬取『京东』商品数据,原来这么简单!

爬虫入门篇

1.今天只分享python、爬虫入门级学习资料

爬虫框架篇

1.以『B站』为实战案例!手把手教你掌握爬虫必备框架『Scrapy』

2.爬取1907条『课程学习』数据,分析哪类学习资源最受大学生青睐1

爬虫反爬篇

1.爬虫遇到反爬机制怎么办? 看看我是如何解决的!


2.python实战破解『梨视频』反爬机制,轻松实现批量视频下载!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存